# 作者：詹广权
# 版权所有：www.cdsjcc.cn/su-xz
# 说明：工具栏
# 功能：管理插件工具栏和菜单，负责创建和排列工具按钮。

module SuXZ
  # 工具栏功能模块
  module GJL
    # 存储工具栏
    @toolbar = nil
    # 是否已加载工具栏
    @toolbar_loaded = false
    # 贴图穿透功能已移除
    
    # 初始化工具栏
    def self.initialize_toolbar
      return if @toolbar_loaded
      
      puts "开始初始化工具栏..."
      
      begin
        # 创建工具栏
        @toolbar = UI::Toolbar.new("线生成槽")
        
        # 按照指定顺序添加按钮："线转槽、参数设置"
        
        # 1. 首先添加线转槽按钮
        if SuXZ.const_defined?(:YL) && SuXZ.const_defined?(:KC)
          puts "KC和YL模块已找到，添加线转槽工具按钮..."
          
          # 添加打开工具按钮（启动可视化预览）
          cmd_start = UI::Command.new("线转槽") {
            if SuXZ::YL.respond_to?(:start_preview_tool)
              SuXZ::YL.start_preview_tool
            else
              UI.messagebox("预览功能不可用")
            end
          }
          # 加载图标，如果找不到则使用默认图标
          cmd_start.small_icon = File.join(File.dirname(__FILE__), "images", "xx.png")
          cmd_start.large_icon = File.join(File.dirname(__FILE__), "images", "xx.png")
          cmd_start.tooltip = "线转槽"
          cmd_start.status_bar_text = "启动线转槽交互预览工具，可以实时预览凹槽效果"
          @toolbar.add_item(cmd_start)
          puts "已添加线转槽工具按钮"
        else
          puts "未找到必要模块，线转槽功能不可用"
        end
        
        # 2. 添加参数设置按钮
        if SuXZ.const_defined?(:CS) && SuXZ::CS.respond_to?(:show_settings_dialog)
          cmd_settings = UI::Command.new("参数设置") {
            SuXZ::CS.show_settings_dialog
          }
          # 加载图标，如果找不到则使用默认图标
          cmd_settings.small_icon = File.join(File.dirname(__FILE__), "images", "sz.png")
          cmd_settings.large_icon = File.join(File.dirname(__FILE__), "images", "sz.png")
          cmd_settings.tooltip = "参数设置"
          cmd_settings.status_bar_text = "设置线转槽的参数"
          @toolbar.add_item(cmd_settings)
          puts "已添加参数设置按钮"
        else
          puts "未找到CS模块，设置按钮未添加"
        end
        
        # 尝试显示工具栏
        puts "正在显示工具栏..."
        @toolbar.show
        puts "工具栏显示完成"
        
        @toolbar_loaded = true
        puts "工具栏初始化完成，按钮顺序：线转槽、贴图穿透、|、参数设置"
      rescue => e
        puts "初始化工具栏时出错: #{e.message}"
        puts e.backtrace.join("\n")
      end
    end
    
    # 贴图穿透功能已移除
    
    # 添加菜单项
    # 参数：
    # - menu_name: 菜单名称
    # - item_name: 菜单项名称
    # - &block: 点击菜单项时执行的代码块
    def self.add_menu_item(menu_name, item_name, &block)
      puts "尝试添加菜单项: #{menu_name} > #{item_name}"
      
      begin
        # 获取Extensions菜单
        extensions_menu = UI.menu("Extensions")
        
        # 检查指定的菜单是否存在
        menu = nil
        
        # 如果菜单名称是"插件扩展"，尝试创建或获取该菜单
        if menu_name == "插件扩展"
          # 尝试找到现有的"插件扩展"菜单
          # 如果不存在，则创建一个新的
          begin
            menu = extensions_menu.add_submenu(menu_name)
          rescue => e
            puts "创建菜单'#{menu_name}'时出错: #{e.message}"
            # 尝试使用主菜单作为备选
            if defined?(SuXZ::KZ) && SuXZ::KZ.respond_to?(:main_menu)
              menu = SuXZ::KZ.main_menu
              puts "使用KZ模块的主菜单作为备选"
            end
          end
        else
          # 如果菜单名称不是"插件扩展"，尝试在Extensions菜单下查找或创建
          begin
            menu = extensions_menu.add_submenu(menu_name)
          rescue => e
            puts "创建菜单'#{menu_name}'时出错: #{e.message}"
          end
        end
        
        # 如果找到或创建了菜单，添加菜单项
        if menu
          menu.add_item(item_name, &block)
          puts "成功添加菜单项: #{menu_name} > #{item_name}"
          return true
        else
          puts "无法添加菜单项，菜单'#{menu_name}'不存在"
          return false
        end
      rescue => e
        puts "添加菜单项时出错: #{e.message}"
        puts e.backtrace.join("\n")
        return false
      end
    end
    
    # 获取工具栏
    def self.toolbar
      initialize_toolbar unless @toolbar_loaded
      @toolbar
    end
    
    # 初始化
    def self.init
      puts "工具栏功能已加载，准备初始化工具栏..."
      
      # 确保KC模块已加载
      if SuXZ.const_defined?(:KC)
        puts "KC模块已加载"
      else
        puts "警告：KC模块未加载，功能将不可用"
      end
      
      # 确保YL模块已加载
      if SuXZ.const_defined?(:YL)
        puts "YL模块已加载"
      else
        puts "警告：YL模块未加载，可视化预览功能将不可用"
      end
      

      
      # 确保TT模块已加载
      if SuXZ.const_defined?(:TT)
        puts "TT模块已加载"
      else
        puts "警告：TT模块未加载，贴图穿透功能将不可用"
      end
      
      # 初始化工具栏
      initialize_toolbar
    end
  end
  
  # 初始化GJL模块
  GJL.init
end